// ip正则表达式
export const isValidIP = (str) => {
    str = String(str);
    const reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
    return reg.test(str);
}

// 汉字和数字表达式
export const isValidChineseNum = (str) => {
    str = String(str);
    const reg = /^[\u4e00-\u9fa50-9,]+$/;
    return reg.test(str);
}

// 汉字和数字和字母和,表达式
export const isValidChineseNumAlphWithOutdun = (str) => {
    str = String(str);
    const reg = /^[\u4e00-\u9fa50-9a-zA-Z,]+$/;
    return reg.test(str);
}

// 汉字和数字和字母和、,表达式
export const isValidChineseNumAlph = (str) => {
    str = String(str);
    const reg = /^[\u4e00-\u9fa50-9a-zA-Z、,]+$/;
    return reg.test(str);
}
// 数字或者字母
export const isValidAlphNum = (str) => {
    str = String(str);
    const reg = /^[0-9A-Za-z]+$/;
    return reg.test(str);
}

// 汉字正则表达式
export const isValidChinese = (str) => {
    str = String(str);
    const reg = /[\u4e00-\u9fa5]/gm;
    return reg.test(str);
}

// 手机号码
export const isValidPhone = (str) => {
    str = String(str);
    const reg = /^(0|86|17951)?(13[0-9]|15[012356789]|166|17[3678]|18[0-9]|14[57])[0-9]{8}$/;
    return reg.test(str);
}

export const isPositiveInteger=(s)=>{//是否为正整数
    var re = /^[0-9]+$/ ;
    return re.test(s)
}

export const isPort=(str)=>{
    var parten=/^(\d)+$/g;
    if(parten.test(str)&&parseInt(str)<=65535&&parseInt(str)>=0){
        return true;
     }else{
        return false;
     }
}

//特殊符号检测
export const isReg=(str)=>{
    var pattern = new RegExp("[`~!@#$^&*()=|{}':;'\\[\\].<>《》/?~！@#￥……&*（）——|{}【】‘；：”“'。、？ ]");
　　if (pattern.test(str)){
　　　　return true;
　　}
　　return false;
}
// 连续字符检测
export const _isKeyBoardContinuousChar = (str) => {
    var c1 = [
        ['!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+'],
        ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '{', '}', '|'],
        ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ':', '"'],
        ['z', 'x', 'c', 'v', 'b', 'n', 'm', '<', '>', '?']
    ];
    var c2 = [
        ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '='],
        ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', '\\'],
        ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\''],
        ['z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/']
    ];
    str = str.split("");
    //获取坐标位置
    var y = [];
    var x = [];
    for (var c = 0; c < str.length; c++) {
        y[c] = 0;//当做~`键处理
        x[c] = -1;
        for (var i = 0; i < c1.length; i++) {
            for (var j = 0; j < c1[i].length; j++) {
                if (str[c] == c1[i][j]) {
                    y[c] = i;
                    x[c] = j;
                }
            }
        }
        if (x[c] != -1) continue;
        for (var i = 0; i < c2.length; i++) {
            for (var j = 0; j < c2[i].length; j++) {
                if (str[c] == c2[i][j]) {
                    y[c] = i;
                    x[c] = j;
                }
            }
        }
    }
    //匹配坐标连线
    for (var c = 1; c < str.length - 1; c++) {
        if (y[c - 1] == y[c] && y[c] == y[c + 1]) {
            if ((x[c - 1] + 1 == x[c] && x[c] + 1 == x[c + 1]) || (x[c + 1] + 1 == x[c] && x[c] + 1 == x[c - 1])) {
                return true;
            }
        } else if (x[c - 1] == x[c] && x[c] == x[c + 1]) {
            if ((y[c - 1] + 1 == y[c] && y[c] + 1 == y[c + 1]) || (y[c + 1] + 1 == y[c] && y[c] + 1 == y[c - 1])) {
                return true;
            }
        }
    }
    return false;
}